package com.sss.hloster02;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerThread extends Thread {
//服务器ServerSocket
	// 服务器ServerSocket监听的端口和客户端的端口号一致，否则无法建立连接
	private ServerSocket ssocket;

	public void run() {

		try {
			// 初始化服务器的ServerSocket
			ssocket = new ServerSocket(8899);

			while (true) {
				// 使用服务器的ServerSocket创建的一个用于和客户端建立连接的Socket对象
				Socket socket = ssocket.accept();
				////////////// 接收消息////////////////
				// 与客户端建立连接
				BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8"));
				// 读入客户端发送的消息
				String strIn = br.readLine();
				System.out.println("你好，我是服务器，接收到你的消息：" + strIn);

				//////////// 发送消息//////////////

				// 获取socket的输出流对象
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "utf-8"));
				// 输出内容到网络，发送给客户端
				String strMsgSend = "hello,客户端，我是服务器端！";
				bw.write(strMsgSend);
				// 输出信息
				System.out.println(strMsgSend);
				// 一般输出流将换行或者回车作为一行内容的结束，所以需要在发送之前输出一个换行符或者回车符表示一行内容结束，然后输出流将其发送到网络给服务器
				// bw.newLine();
				bw.write("\n");
				// 清空
				bw.flush();
			}
		} catch (Exception e) {

			e.printStackTrace();
		}
	}
}
